home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 1 / NetNews Offline Volume 1.iso / news / fido / ger / amiga / 444 < prev    next >
Internet Message Format  |  1996-03-16  |  2KB

  1. From: Andre_Schenk@p42.f1216.n2471.z2.fido.sub.org (Andre Schenk)
  2. Organization: volle Error-Freiheit durch 4-Fach Quadra-Hyping-Cop
  3. Path: f1216.n2471.z2.fidonet.org!not-for-mail
  4. Newsgroups: fido.ger.amiga
  5. Subject: Re: Umlautkonverter versaut UU-Codes
  6. Message-ID: <82644060@melior.s.bawue.de>
  7. References: <MSGID_2=3A240=2F5802.6_2a336b63@fidonet.org>
  8. Date: Thu, 10 Aug 1995 16:35:00 +0200
  9.  
  10. Am <08 Aug 95  15:33:53> schrieb Eric Wick:
  11.  
  12.  EW> Alle Umlaute im Text (und im UU) wurden ersetzt durch
  13.  
  14.  EW> "=XX" Hexcodes.
  15.  
  16. Das  nennt  sich "Quoted-Printable Content-Transfer-Encoding" und
  17. ist  Teil des MIME-Standards.  XX ist der hexadezimale ASCII-Code
  18. des ersetzten Zeichens.
  19.  
  20. Mit  Hilfe  eines der folgenden Code-Fragmente (Oberon, C) kannst
  21. Du die Zeichen rueckuebersetzen:
  22.  
  23. PROCEDURE MimeToAscii (VAR str : ARRAY OF CHAR);
  24. VAR
  25.   index, value : LONGINT;
  26.   valstr       : ARRAY 4 OF CHAR;
  27. BEGIN
  28.   index := 0;
  29.   valstr [2] := "H";
  30.   WHILE (index < LEN (str)) & (str [index] # a.nul) DO
  31.     CASE str [index] OF
  32.     | "_" :
  33.       str [index] := a.sp
  34.     | "=" :
  35.       IF index < s.Length (str) - 2 THEN
  36.         valstr [0] := str [index + 1];
  37.         valstr [1] := str [index + 2];
  38.         IF c.StringToInt (valstr, value) THEN
  39.           IF value > 0 THEN
  40.             s.Delete (str, index, 2);
  41.             str [index] := CHR (value)
  42.           END
  43.         END
  44.       END
  45.     ELSE END;
  46.     INC (index)
  47.   END
  48. END MimeToAscii;
  49.  
  50. void MimeToAscii (char *str)
  51. {
  52.   int      index, value;
  53.   char     valstr [3];
  54.  
  55.   index = 0;
  56.   valstr [2] = nul;
  57.   while (str [index] != nul)
  58.   {
  59.     switch (str [index])
  60.     {
  61.       case '_' :
  62.         str [index] = sp;
  63.         break;
  64.       case '=' :
  65.         if (index < strlen (str) - 2)
  66.         {
  67.           valstr [0] = str [index + 1];
  68.           valstr [1] = str [index + 2];
  69.           if ((value = strtoul (valstr, NULL, 16)) != 0)
  70.           {
  71.             Delete (str, index, 2);
  72.             str [index] = (char) value;
  73.           }
  74.         }
  75.         break;
  76.     }
  77.     index++;
  78.   }
  79. }
  80.  
  81. Tschuess AndrΘ
  82.